package cn.always.xiajia.admin.oauth2.client.impl;

import javax.annotation.Resource;
import javax.validation.Valid;

import org.springframework.stereotype.Service;

import cn.always.xiajia.admin.client.api.oauth2.OAuth2AccessTokenApi;
import cn.always.xiajia.admin.client.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
import cn.always.xiajia.admin.client.api.oauth2.dto.OAuth2AccessTokenCreateReqDTO;
import cn.always.xiajia.admin.client.api.oauth2.dto.OAuth2AccessTokenRespDTO;
import cn.always.xiajia.admin.oauth2.service.OAuth2AccessTokenService;
import lombok.extern.slf4j.Slf4j;

/**
 * 
 * @author xgj
 *
 */
@Slf4j
@Service("oAuth2AccessTokenApi")
public class OAuth2AccessTokenApiImpl implements OAuth2AccessTokenApi {

	@Resource
	private OAuth2AccessTokenService oAuth2AccessTokenService;

	/**
	 * 创建访问令牌
	 *
	 * @param reqDTO 访问令牌的创建信息
	 * @return 访问令牌的信息
	 */
	@Override
	public OAuth2AccessTokenRespDTO createAccessToken(@Valid OAuth2AccessTokenCreateReqDTO reqDTO) {
		return oAuth2AccessTokenService.createAccessToken(reqDTO);
	}

	/**
	 * 校验访问令牌
	 *
	 * @param accessToken 访问令牌
	 * @return 访问令牌的信息
	 */
	@Override
	public OAuth2AccessTokenCheckRespDTO checkAccessToken(String accessToken) {
		return oAuth2AccessTokenService.checkAccessToken(accessToken);
	}

	/**
	 * 移除访问令牌
	 *
	 * @param accessToken 访问令牌
	 * @return 访问令牌的信息
	 */
	@Override
	public OAuth2AccessTokenRespDTO removeAccessToken(String accessToken) {
		return oAuth2AccessTokenService.removeAccessToken(accessToken);
	}

	/**
	 * 刷新访问令牌
	 *
	 * @param refreshToken 刷新令牌
	 * @param clientId 客户端编号
	 * @return 访问令牌的信息
	 */
	@Override
	public OAuth2AccessTokenRespDTO refreshAccessToken(String refreshToken, String clientId) {
		return oAuth2AccessTokenService.refreshAccessToken(refreshToken, clientId);
	}
}
